#include <stdio.h>
#include <stdlib.h>
#include <math.h> 

// 函数声明
double calculate(char op, double a, double b);

int main() 
{
    char op;
    double num1, num2, result;

    printf("please input (+, -, *, /, ^, s(sin), c(cos), t(tan)): ");
    scanf("%c", &op);

    switch (op) {
        case '+':
        case '-':
        case '*':
        case '/':
        case '^':
            printf("please input two numbers: ");
            scanf("%lf %lf", &num1, &num2);
            result = calculate(op, num1, num2);
            break;
        case 's': // 对于sin，我们约定输入's'
        case 'c': // 对于cos，我们约定输入'c'
        case 't': // 对于tan，我们约定输入't'
            printf("please input () radians: ");
            scanf("%lf", &num1);
            result = calculate(op, num1, 0); // 第二个参数未使用，但保持函数调用一致
            break;
        default:
            printf("Error!\n");
            return 1;
    }

    printf("output: %lf\n", result);
    return 0;
}

// 计算函数
double calculate(char op, double a, double b) 
{
    switch (op) {
        case '+': return a + b;
        case '-': return a - b;
        case '*': return a * b;
        case '/':
            if (b == 0) {
                printf("error: can not be zero。\n");
                exit(1);
            }
            return a / b;
        case '^': return pow(a, b); // 使用pow函数进行幂运算
        case 's': return sin(a); // 正弦函数
        case 'c': return cos(a); // 余弦函数
        default: return 0; // 防止编译警告
    }
}